CtgDetalleAreaConocimiento = function(){
	return {
		confirmProcess: function(option, ctgDetalleAreaConocimientoId, ctgDetalleAreaConocimientoActivo){
			Asg.Message.confirm(
					option == "delete" ? Asg.constants.CONFIRM_DELETE_MESSAGE :
						(ctgDetalleAreaConocimientoActivo == "1" ? Asg.constants.CONFIRM_INACTIVATE_MESSAGE : Asg.constants.CONFIRM_ACTIVATE_MESSAGE), function(btn){
				if(btn != "no") CtgDetalleAreaConocimiento.processRegister(option, ctgDetalleAreaConocimientoId, ctgDetalleAreaConocimientoActivo);
			});
		},
		processRegister: function(option, ctgDetalleAreaConocimientoId, ctgDetalleAreaConocimientoActivo){
			Asg.Message.progress("Guardarndo Informaci\u00F3n...");
			Ext.Ajax.request({
				timeout: Asg.constants.TIMEOUT_SECONDS,
				url: option == "delete" ? Asg.constants.CONTEXT_PATH + "/admin/detalleConocimientos/delete" : Asg.constants.CONTEXT_PATH + "/admin/detalleConocimientos/toggle",
				params: {
					ctgDetalleAreaConocimientoId: ctgDetalleAreaConocimientoId, 
					ctgDetalleAreaConocimientoActivo: ctgDetalleAreaConocimientoActivo,
					ctgAreaConocimientoId : RedNacionalEmpleo.getCtgAreaConocimientoId()
					
				},
				callback: function(options, success, response){
					Ext.Msg.hide();
					var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
					if(!success || !jsonObject){
						Asg.Message.alertInvalid(Asg.constants.DEFAULT_ERROR_MESSAGE);
						return
					}
					Asg.Message.alert(jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE);
					if(jsonObject.success){
						
						if(jsonObject.data) 
							Asg.Grid.loadData("gridDetalleAreaConocimiento", jsonObject.data);
						return;
					}
				}
			});
		},
		loadDetalleAreaConocimiento : function(){
			Asg.Message.progress("Cargando Informaci\u00F3n...");
			Ext.Ajax.request({
				timeout: Asg.constants.TIMEOUT_SECONDS,
				    url: Asg.constants.CONTEXT_PATH + "/admin/detalleConocimientos/findDetByArea",
				    params : {
				    	ctgAreaConocimientoId: RedNacionalEmpleo.getCtgAreaConocimientoId()
				    },
				    callback: function(options, success, response){
				    	Ext.Msg.hide();
				    	if(success){
				    		var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
				    		if(jsonObject && jsonObject.success){
				    			Asg.Grid.loadData("gridDetalleAreaConocimiento", jsonObject.detalleArea);
				    		}
				    	}
				    }
			});
		},
		addDetalle : function(){
			if(!Asg.Grid.hasSelection("gridAreaConocimiento")){
				Asg.Message.alertInvalid("Debe seleccionar el Area que desea agregarle el Detalle");
				return;
			}
			Ext.getCmp("gridDetalleAreaConocimiento").getStore().insert(0, ctgDetalleAreaConocimientoModel.create());
 		    Ext.getCmp("gridDetalleAreaConocimiento").editingPlugin.startEditByPosition({row: 0, column: 0});
		},
		saveOrUpdate : function(){
			var records = Ext.getCmp("gridDetalleAreaConocimiento").getStore().data.filterBy(function(item){
				return item.dirty === true && item.isValid();
			}).items;
			if((!records || records.length == 0) && (!newRecords || newRecords.length == 0)){
				Asg.Message.alertInvalidFields("* No se encontraron registros nuevos, ni actualizados");
				return;
			}
			var jsonString = "";
			Ext.each(records, function(record){
				jsonString += (Ext.isEmpty(jsonString) ? "" : ",") + Ext.encode(record.data);
			});
			jsonString = "[" + jsonString + "]";
			Asg.Message.progress("Guardarndo Informaci\u00F3n...");
			Ext.Ajax.request({
				timeout: Asg.constants.TIMEOUT_SECONDS,
				url: Asg.constants.CONTEXT_PATH + "/admin/detalleConocimientos/saveOrUpdateAll",
				params: {jsonString: jsonString, ctgAreaConocimientoId: RedNacionalEmpleo.getCtgAreaConocimientoId()},
				callback: function(options, success, response){
					Ext.Msg.hide();
					var jsonObject = Asg.Utils.ajaxRequestGetJson(response);
					if(!success || !jsonObject){
						Asg.Message.alertInvalid(Asg.constants.DEFAULT_ERROR_MESSAGE);
						return
					}
					Asg.Message.alert(jsonObject.message || Asg.constants.DEFAULT_ERROR_MESSAGE);
					if(jsonObject.success){
						if(jsonObject.data) 
							Asg.Grid.loadData("gridDetalleAreaConocimiento", jsonObject.data);
					}
				}
			});
		},
		initConfig: function(config){
			config = config || {};
			Ext.define('ctgDetalleAreaConocimientoModel', {
				extend: 'Ext.data.Model',
			    idProperty: "ctgDepartamentoId",
			    fields: [
					{name: "ctgDetalleAreaConocimientoId", type: "int"}, 
					{name: "ctgDetalleAreaConocimientoDescripcion", type: "string"},
					{name: "ctgDetalleAreaConocimientoActivo", type: "string", defaultValue: "1"}
				]
			});
			return {
				items: {
					align: 'center',
					border: false,
					flex: 1,
					layout: {
						type: "hbox",
						align : "stretch",
						pack  : "start"
					},
					items:[
				       {
				        	width: 420,
				        	border: false,
				        	 flex: 1,
				        	layout: {
								type: "vbox",
								align : "stretch",
								pack  : "start"
							},
							items: [
								{
									title: 'AREA CONOCIMIENTOS',
						        	 xtype: 'grid',
						        	 id: 'gridAreaConocimiento',
					        		 frame: true,
					        		 minHeight: 250,
					        		 flex: 1,
					        		 margins: "15 15 15 15",
					        		 store: new Ext.data.SimpleStore({
										data: config.ctgAreaConocimiento || [],
										fields: ["id", "value"]
				        		 	 }),
				        		 	columns: [
			  		        	        {header: "Area Conocimiento", dataIndex: "value",width: 100,flex: 1}
									],
									selModel:{
				        	            listeners: {
				        	            	selectionchange: function(selectionModel, rows){
				        	            		if(rows && rows.length > 0){
				        	            			RedNacionalEmpleo.setCtgAreaConocimientoId(rows[0].get("id"));
				        	            			CtgDetalleAreaConocimiento.loadDetalleAreaConocimiento();
				        	            		}
				        	            	}
				        	            }
									}
								}
							]
				       }, {
				        	width: 420,
				        	border: false,
				        	flex: 1,
				        	layout: {
								type: "vbox",
								align : "stretch",
								pack  : "start"
							},
							items: [
								{
									 title: 'DETALLE',
						        	 xtype: 'grid',
						        	 id: 'gridDetalleAreaConocimiento',
					        		 frame: true,
					        		 minHeight: 250,
					        		 flex: 1,
					        		 margins: "15 15 15 15",
					        		 store: new Ext.data.SimpleStore({
										data: [],
								        fields: [
								             "ctgDetalleAreaConocimientoId", "ctgDetalleAreaConocimientoDescripcion", 
								             "ctgDetalleAreaConocimientoActivo", "ctgDetalleAreasConocimientos.ctgAreaConocimiento.ctgCatalogoId"
								        ]
									 }),
				        		 	 columns: [
										{
											header: "Nombre", 
											dataIndex: "ctgDetalleAreaConocimientoDescripcion", 
											flex: 1, 
											minWidth: 150,
											field: {
												xtype: "textfield",
												enforceMaxLength: true,
												maxLength: 100,
												allowBlank: false
											}
										},{
							        		header: "Estado", 
							        		dataIndex: "ctgDetalleAreaConocimientoActivo", 
							        		renderer: "webToActive", 
							        		width: 100,
							        		field: {
							        			xtype: "combo",
							        			store: new Ext.data.SimpleStore({
							        				data: Asg.Combo.activeInactiveArray() || [],
							        				fields: ["id", "value"]
							        			}),
							        			displayField: "value",
							        			valueField: "id",
						        				typeAhead: true,
						        				minChars: 1,
						        				queryMode: "local",
						        				forceSelection: true,
						        				triggerAction: "all"
					        				}
						        		},{
				  		        	        	xtype:"actioncolumn",
				  		        	        	align: "center",
				  		        	        	width: 60,
				  	        	            	items: [
				  	    	            	        {
				  			    	            		icon: Asg.constants.CONTEXT_PATH + "/resources/images/enableDisable.png",
				  			    	            		iconCls: "icon",
				  			    	            		tooltip: "Activar / Inactivar", 
				  			    	            		handler: function(grid, rowIndex, colIndex) {
				  			    	                        var record = grid.getStore().getAt(rowIndex);
				  			    	                        var ctgDetalleAreaConocimientoId = record.get("ctgDetalleAreaConocimientoId");
				  			    	                        if(record){
				  			    	                        	if(Ext.isEmpty(ctgDetalleAreaConocimientoId) || ctgDetalleAreaConocimientoId < 1){
				  		        	                        		Asg.Message.alertInvalid("Registro debe ser guardado primero para realizar esta operaci\u00F3n");
				  		        	                        		return;
				  		        	                        	}
				  			    	                        	CtgDetalleAreaConocimiento.confirmProcess("toggle", record.get("ctgDetalleAreaConocimientoId"), record.get("ctgDetalleAreaConocimientoActivo"));
				  			    	                        }
				  			    	            		}
				  			            			},{
				  			    	            		icon: Asg.constants.CONTEXT_PATH + "/resources/images/delete.png",
				  			    	            		iconCls: "icon",
				  			    	            		tooltip: "Eliminar",
				  			    	            		handler: function(grid, rowIndex, colIndex) {
				  			    	                        var record = grid.getStore().getAt(rowIndex);
				  			    	                        if(record){
				  			    	                        	var ctgDetalleAreaConocimientoId = record.get("ctgDetalleAreaConocimientoId");
				  			    	                        	if(Ext.isEmpty(ctgDetalleAreaConocimientoId) || ctgDetalleAreaConocimientoId < 1){
				  		        	                        		grid.getStore().remove(record);
				  		        	                        		return;
				  		        	                        	}
				  			    	                        	CtgDetalleAreaConocimiento.confirmProcess("delete", ctgDetalleAreaConocimientoId, record.get("ctgDetalleAreaConocimientoActivo"));
				  			    	                        }
				  			    	            		}
				  			            			}
				  		            			]
				  			        		}
									],
									
						            selType: 'cellmodel',
						            plugins: [
						                Ext.create('Ext.grid.plugin.CellEditing', {
						                    clicksToEdit: 1
						                })
						            ],
									tbar: [
					        	       "->",
					        	       {
					        	    	   text: "Agregar", 
					        	    	   iconCls: Asg.constants.ADD_ICON,
					        	    	   handler: function(){
					        	    		   CtgDetalleAreaConocimiento.addDetalle();
					        	    	   }
				        	    	   },
					        	       "-",
					        	       {text: "Guardar", iconCls: Asg.constants.SAVE_ICON, handler: CtgDetalleAreaConocimiento.saveOrUpdate}
				        	        ]
								}
							]
				       }
			       ]
				}
			};
		}
	};
}();